﻿#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;

//1.对char和int数组进行排序，排序规则：从大到小，利用选择排序；
template<class T>
void mySwapTemplate(T& a, T& b)
{
	T tmp = a;
	a = b;
	b = tmp;
}

template<class T>
void mySortTemplate(T arr[], int len)
{
	for (int i = 0; i < len; ++i)
	{
		int max = i;
		for (int j = i + 1; j < len; ++j)
		{
			if (arr[max] < arr[j])
			{
				//2.交换下标；
				max = j;
			}
		}
		if (max != i)
		{
			//3.交换数据；
			mySwapTemplate(arr[max], arr[i]);
		}
	}
}
//4.输出数组元素的模板；
template<class T>
void printArrayTemplate(T arr[], int len)
{
	for (int i = 0; i < len; ++i)
	{
		cout << arr[i] << " ";
	}
	cout << endl;
}
void testTemplateSort()
{
	char charArr[] = "helloworld";
	int num = sizeof(charArr) / sizeof(char);
	cout << "charArr的长度：" << num << endl;//11
	mySortTemplate(charArr, num);
	printArrayTemplate(charArr, num);//w r o o l l l h e d

	int intArr[] = { 1,4,100,34,55 };
	int numInt = sizeof(intArr) / sizeof(int);
	cout << "intArr的长度：" << numInt << endl;//5
	mySortTemplate(intArr, numInt);
	printArrayTemplate(intArr, numInt);//100 55 34 4 1
}

//main298：课堂练习使用模板实现字符和数字数组排序
int main298()
{
	testTemplateSort();

	system("pause");
	return EXIT_SUCCESS;
}